package com.zx.crowdfunding.mapper;

import com.zx.crowdfunding.entity.Auth;
import com.zx.crowdfunding.entity.AuthExample;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

public interface AuthMapper {
    int countByExample(AuthExample example);

    int deleteByExample(AuthExample example);

    int deleteByPrimaryKey(Integer id);

    int insert(Auth record);

    int insertSelective(Auth record);

    List<Auth> selectByExample(AuthExample example);

    Auth selectByPrimaryKey(Integer id);

    int updateByExampleSelective(@Param("record") Auth record, @Param("example") AuthExample example);

    int updateByExample(@Param("record") Auth record, @Param("example") AuthExample example);

    int updateByPrimaryKeySelective(Auth record);

    int updateByPrimaryKey(Auth record);

	/**
	 * 查询角色已分配的权限
	 * @param roleId 角色id
	 * @return Auth对象的List集合
	 */
	List<Auth> selectRoleAssignedAuth(Integer roleId);

	/**
	 * 根据管理员id查询已分配的权限代码集合
	 * @param adminId 管理员id
	 * @return 权限名称的List集合
	 */
	List<String> selectAssignedAuthCodeByAdminId(Integer adminId);
	
	/**
	 * 查询菜单已分配的权限
	 * @param menuId 菜单id
	 * @return Auth对象的List集合
	 */
	List<Auth> selectMenuAssignedAuth(Integer menuId);
	
	/**
	 * 查询操作已分配的权限
	 * @param operationId 操作id
	 * @return Auth对象的List集合
	 */
	List<Auth> selectOperationAssignedAuth(Integer operationId);
	
	/**
	 * 查询全部资源权限
	 * @return Map对象的List集合<br> 
	 * 		key : resource 代表资源路径字符串<br>
	 * 		key : authorize 代表权限SPEL表达式字符串<br>
	 */
	List<Map<String, Object>> selectAllResourceAuth();
	
	/**
	 * 查询全部代码权限
	 * @return Map对象的List集合<br>  
	 * 		key : code 代表代码字符串<br>
	 * 		key : authorize 代表权限SPEL表达式字符串<br>
	 */
	List<Map<String, Object>> selectAllCodeAuth();

}